package br.ufc.Bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

import br.ufc.DAO.Implements.DisciplinaDAO;
import br.ufc.DAO.Implements.ProfessorDAO;
import br.ufc.DAO.Implements.ProfessorDisciplinaDAO;
import br.ufc.si.model.Disciplina;
import br.ufc.si.model.Professor;
import br.ufc.si.model.ProfessorDisciplina;

public class ProfessorBean {

	private Professor professor = new Professor();
	private int aux[] = new int[100];

	private DisciplinaDAO disDao = new DisciplinaDAO();
	private List<Disciplina> disciplinas;
	private List<SelectItem> disciplinas_selecao;

	public ProfessorBean() {

		disDao = new DisciplinaDAO();
		disciplinas = new ArrayList<Disciplina>();
		disciplinas_selecao = new ArrayList<SelectItem>();

		disciplinas = disDao.ListAll();

		for (Disciplina d : disciplinas) {
			disciplinas_selecao.add(new SelectItem(d.getCodigo(), d.getNome()));
		}

	}

	public String CadastrarProfessor() {

		ProfessorDAO p = new ProfessorDAO();
		professor.setNumeroDisciplinasLecionadas(0);
		p.save(professor);

		return "cadastrarprofessordisciplina";
	}

	public String CadastrarDisciplinaProfessor() {

		for (int i = 0; i < aux.length; i++) {
			Disciplina d = new Disciplina();
			DisciplinaDAO disciplinaDao = new DisciplinaDAO();
			d = disciplinaDao.listDisciplinaByCodigo(aux[i]);

			if (professor.getNumeroDisciplinasLecionadas() < 2) {
				ProfessorDisciplina p = new ProfessorDisciplina();
				ProfessorDisciplinaDAO dao = new ProfessorDisciplinaDAO();

				p.setDisciplina(d);
				p.setProfessor(professor);
				dao.save(p);
				ProfessorDAO prof = new ProfessorDAO();
				professor.setNumeroDisciplinasLecionadas(professor
						.getNumeroDisciplinasLecionadas() + 1);
				prof.update(professor);

			}

		}
		return "oi";
	}

	public Professor getProfessor() {
		return professor;
	}

	public void setProfessor(Professor professor) {
		this.professor = professor;
	}

	public int[] getAux() {
		return aux;
	}

	public void setAux(int[] aux) {
		this.aux = aux;
	}

	public DisciplinaDAO getDisDao() {
		return disDao;
	}

	public void setDisDao(DisciplinaDAO disDao) {
		this.disDao = disDao;
	}

	public List<Disciplina> getDisciplinas() {
		return disciplinas;
	}

	public void setDisciplinas(List<Disciplina> disciplinas) {
		this.disciplinas = disciplinas;
	}

	public List<SelectItem> getDisciplinas_selecao() {
		return disciplinas_selecao;
	}

	public void setDisciplinas_selecao(List<SelectItem> disciplinas_selecao) {
		this.disciplinas_selecao = disciplinas_selecao;
	}

}
